package com.ticket.system.mapper;

import com.ticket.system.domain.YanchuPerform;
import com.ticket.system.domain.vo.PerFormAppVO;
import com.ticket.system.domain.vo.PerformVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 演出Mapper接口
 * 
 * @author ruoyi
 * @date 2023-09-27
 */
public interface YanchuPerformMapper 
{
    /**
     * 查询演出
     *
     * @param id 演出主键
     * @return 演出
     */
    public YanchuPerform selectYanchuPerformById(Long id);

    /**
     * 查询演出列表
     *
     * @param yanchuPerform 演出
     * @return 演出集合
     */
    public List<YanchuPerform> selectYanchuPerformList(YanchuPerform yanchuPerform);

    public List<YanchuPerform> selectPerformStaticsList(@Param("operaIds")String operaIds,@Param("status")String status,
                                                        @Param("performTypes")String performTypes,@Param("performName")String performName);

    public List<PerformVo> selectPerformVoList(YanchuPerform yanchuPerform);

    /**
     * 新增演出
     *
     * @param yanchuPerform 演出
     * @return 结果
     */
    public int insertYanchuPerform(YanchuPerform yanchuPerform);

    /**
     * 修改演出
     *
     * @param yanchuPerform 演出
     * @return 结果
     */
    public int updateYanchuPerform(YanchuPerform yanchuPerform);

    /**
     * 删除演出
     *
     * @param id 演出主键
     * @return 结果
     */
    public int deleteYanchuPerformById(Long id);

    /**
     * 批量删除演出
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYanchuPerformByIds(Long[] ids);

    /**
     * 剧院下演出
     *
     * @param operaId
     * @return
     */
    List<YanchuPerform> getPerformByOperaId(Long operaId);

    /**
     * 海报  筛选演出
     *
     * @param operaId
     * @param keyName
     * @return
     */
    List<YanchuPerform> getPerformByPosters(@Param("operaId") Long operaId,@Param("keyName") String keyName,@Param("ids") List<Long> ids);

    /**
     * 批量获取演出信息
     *
     * @param movieIds
     * @return
     */
    List<YanchuPerform> selectPerformByIds(@Param("movieIds") List<Long> movieIds);

    /**
     * 所有演出
     *
     * @return
     */
    List<YanchuPerform> selectYanchuPerformLists(Long operaId);

    /**
     * 小程序列表
     *
     * @param list
     * @param performType
     * @param operaId
     * @param startTime
     * @param endTime
     * @return
     */
    List<PerFormAppVO> selectPerformList(@Param("list") List<String> list,
                                         @Param("performType") Long performType,
                                         @Param("operaId") Long operaId,
                                         @Param("startTime")String startTime,
                                         @Param("endTime")String endTime,
                                         @Param("type")Integer type,
                                         @Param("orderType")Integer orderType,
                                         @Param("longitude")Double longitude,
                                         @Param("latitude")Double latitude);

    List<PerFormAppVO> selectPerformListB(@Param("list") List<String> list,
                                         @Param("performType") Long performType,
                                         @Param("operaId") Long operaId,
                                         @Param("startTime")String startTime,
                                         @Param("endTime")String endTime,
                                         @Param("type")Integer type,
                                         @Param("orderType")Integer orderType,
                                         @Param("longitude")Double longitude,
                                         @Param("latitude")Double latitude,
                                         @Param("performIds") List<Long> performIds,
                                         @Param("sessionIds") List<Long> sessionIds);

    List<PerFormAppVO> selectPerformQueryListByDist(@Param("list") List<String> list,@Param("performType") Long performType,
                                                    @Param("operaId") Long operaId,@Param("startTime")String startTime,
                                                    @Param("endTime")String endTime,
                                                    @Param("longitude")Double longitude,@Param("latitude")Double latitude);
    List<PerFormAppVO> selectPerformQueryListBySells(@Param("list") List<String> list,@Param("performType") Long performType,
                                                     @Param("operaId") Long operaId,@Param("startTime")String startTime,
                                                     @Param("endTime")String endTime);

    List<PerFormAppVO> selectPerformQueryListByPrice(@Param("list") List<String> list,@Param("performType") Long performType,
                                                     @Param("operaId") Long operaId,@Param("startTime")String startTime,
                                                     @Param("endTime")String endTime);

    List<PerFormAppVO> selectPerformQueryListByEva(@Param("list") List<String> list,@Param("performType") Long performType,
                                                   @Param("operaId") Long operaId,@Param("startTime")String startTime,
                                                   @Param("endTime")String endTime);

    List<PerFormAppVO> selectPerformQueryListByTime(@Param("list") List<String> list,@Param("performType") Long performType,
                                                   @Param("operaId") Long operaId,@Param("startTime")String startTime,
                                                   @Param("endTime")String endTime);
}
